package site.isscloud.project.mapper;

import org.apache.ibatis.annotations.Param;
import site.isscloud.project.domain.PjStatsLocationTemperatureHour;
import site.isscloud.project.dto.TemperatureTrendDTO;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 空间位置温度小时统计Mapper接口
 */
public interface PjStatsLocationTemperatureHourMapper {

    int insertPjStatsLocationTemperatureHour(PjStatsLocationTemperatureHour pjStatsLocationTemperatureHour);

    List<PjStatsLocationTemperatureHour> selectByTimeRange(@Param("startTime") LocalDateTime startTime,
                                                           @Param("endTime") LocalDateTime endTime);

    int deleteByTimeRange(@Param("startTime") LocalDateTime startTime,
                          @Param("endTime") LocalDateTime endTime);

    int countByTimeRange(@Param("startTime") LocalDateTime startTime,
                         @Param("endTime") LocalDateTime endTime);

    /**
     * 根据电梯ID和时间范围查询温度趋势数据（按天）
     */
    List<TemperatureTrendDTO> selectTrendByLcIdAndTimeRange(
            @Param("lcId") String lcId,
            @Param("startTime") LocalDateTime startTime,
            @Param("endTime") LocalDateTime endTime);

    /**
     * 根据电梯代码和时间范围查询趋势数据
     */
    List<Map<String, Object>> selectTrendByElevatorCodeAndTimeRange(
            @Param("elevatorCode") String elevatorCode,
            @Param("startTime") LocalDateTime startTime,
            @Param("endTime") LocalDateTime endTime,
            @Param("tableSuffix") String tableSuffix);

    List<Map<String, Object>> selectDailyTrendByElevatorCode(@Param("elevatorCode") String elevatorCode,
                                                             @Param("startTime") LocalDateTime startTime,
                                                             @Param("endTime") LocalDateTime endTime);
}